#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>

#define MEMSIZE	1024

/*
 * 共享内存的方式，实现父子进程之间的通信
 * */
int main(int argc, char **argv)
{
	char *str;
	pid_t pid;

	str = mmap(NULL, MEMSIZE, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0);
	if(str == MAP_FAILED){
		perror("mmap()");
		exit(1);
	}
	
	pid = fork();
	if(pid < 0){
		perror("fork()");
		munmap(str, MEMSIZE);
		exit(1);
	}

	if(pid == 0){	// 子进程
		strcpy(str,"Hello!!!");
		munmap(str, MEMSIZE);
		exit(0);
	} else {		// 父进程
		wait(NULL);
		puts(str);
		munmap(str, MEMSIZE);
		exit(0);
	}

	exit(0);
}
